
var maxProfit = function(prices) {
    let get_m = 0;//获得的总利润
    if(prices.length === 1){
        return 0
    }else {
        for (let i = 1; i < prices.length; i++) {
            if(prices[i-1] < prices[i] ){
                get_m += (prices[i] - prices[i-1]);
            }
        }
    }
    return get_m;
};

/**
 * @param {string} s
 * @param {string} t
 * @return {string}
 * 总的思路：先移动子字符串右指针，让子字符串包含t中的所有字符；当移动到字符串包含t中的所有字符的时候，开始移动子字符串的左指针，这样就可以获得包含t中所有字段的最小长度字符串。
 */
var minWindow = function(s, t) {
    let l = 0,//控制子字符串滑动窗口左指针
    map = new Map(),
    len = s.length,
    need_type = 0,//t 中所有非重复字符的个数
    res = '';
    for (let i = 0; i < t.length; i++) {
        map.set(t[i],map.get(t[i]) ? map.get(t[i]) + 1 : 1)
    }
    need_type = map.size;
    for (let i = 0; i < len; i++) {
        if(map.has(s[i])){
            map.set(s[i],map.get(s[i]) - 1);
            if(map.get(s[i]) === 0){
                need_type -= 1
            }
        }
        while(need_type === 0){ //移动左指针，让子字符串长度变短
            res = (!res || res.length > i-l+1)? s.substring(l,i+1) : res;
            if(map.has(s[l])){
                map.set(s[l],map.get(s[l]) + 1);
                if(map.get(s[l]) === 1){
                    need_type += 1
                }
            }
            l += 1;
        }
    }
    return res;
};


